<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        /*
           使用let接收函数调用函数要出现在定义之后
            解释性语言和编译型语言的不同点就在于解释性语言代码是一行一行的执行的 代码在执行的时候不知道下一行会出现什么
            它不能做到对整个文件内的代码的感知，所以对于函数只能先定义再调用
        */

        
       

        // let foo =function(){
        //     console.log("aaaa");
        // }

        // foo();

        /**
         * 因为var要么是函数作用域要么是全局作用域
         * 因此在调用函数的时候函数内部预解析提升变量是不看{}的
        */

      var name ="aaa";
        function foo(){
            var age =12;
            if(true){
                console.log(name);
                var name ="bbb";
            }
        }





    
       

        



    </script>
</body>
</html>